[INFO] cloning repository https://github.com/k8-tools/devflow
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/k8-tools/devflow" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fk8-tools%2Fdevflow", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fk8-tools%2Fdevflow'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 21f7823ad398817353bee9657460d152634338a8
[INFO] checking k8-tools/devflow against try#8ac0915e346f9a2e49ca3951b642c55bd7d1eaab for pr-158447
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fk8-tools%2Fdevflow" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/k8-tools/devflow
[INFO] finished tweaking git repo https://github.com/k8-tools/devflow
[INFO] tweaked toml for git repo https://github.com/k8-tools/devflow written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/k8-tools/devflow on toolchain 8ac0915e346f9a2e49ca3951b642c55bd7d1eaab
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+8ac0915e346f9a2e49ca3951b642c55bd7d1eaab" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/k8-tools/devflow already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+8ac0915e346f9a2e49ca3951b642c55bd7d1eaab" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 176369f4e3933a899d88576de6ea180e7374b4751705ab4c1eac343006a19dc5
[INFO] running `Command { std: "docker" "start" "176369f4e3933a899d88576de6ea180e7374b4751705ab4c1eac343006a19dc5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "176369f4e3933a899d88576de6ea180e7374b4751705ab4c1eac343006a19dc5" "/opt/rustwide/cargo-home/bin/cargo" "+8ac0915e346f9a2e49ca3951b642c55bd7d1eaab" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "176369f4e3933a899d88576de6ea180e7374b4751705ab4c1eac343006a19dc5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "176369f4e3933a899d88576de6ea180e7374b4751705ab4c1eac343006a19dc5" "/opt/rustwide/cargo-home/bin/cargo" "+8ac0915e346f9a2e49ca3951b642c55bd7d1eaab" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.182
[INFO] [stderr]     Checking writeable v0.6.2
[INFO] [stderr]     Checking litemap v0.8.1
[INFO] [stderr]    Compiling icu_properties_data v2.1.2
[INFO] [stderr]     Checking indexmap v2.13.0
[INFO] [stderr]    Compiling icu_normalizer_data v2.1.1
[INFO] [stderr]     Checking regex-syntax v0.8.9
[INFO] [stderr]     Checking generic-array v0.14.7
[INFO] [stderr]    Compiling openssl v0.10.75
[INFO] [stderr]     Checking tracing-core v0.1.36
[INFO] [stderr]    Compiling syn v2.0.116
[INFO] [stderr]     Checking http v0.2.12
[INFO] [stderr]    Compiling zerocopy v0.8.39
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling zstd-safe v5.0.2+zstd.1.5.2
[INFO] [stderr]    Compiling getrandom v0.4.1
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]     Checking linux-raw-sys v0.11.0
[INFO] [stderr]     Checking base64ct v1.8.3
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking deranged v0.5.6
[INFO] [stderr]    Compiling anyhow v1.0.101
[INFO] [stderr]     Checking time-core v0.1.8
[INFO] [stderr]     Checking num-conv v0.2.0
[INFO] [stderr]     Checking winnow v0.7.14
[INFO] [stderr]     Checking predicates-core v1.0.10
[INFO] [stderr]     Checking clap_builder v4.5.60
[INFO] [stderr]     Checking flate2 v1.1.9
[INFO] [stderr]     Checking itertools v0.11.0
[INFO] [stderr]     Checking crypto-common v0.1.7
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking http-body v0.4.6
[INFO] [stderr]     Checking inout v0.1.4
[INFO] [stderr]     Checking float-cmp v0.10.0
[INFO] [stderr]     Checking cipher v0.4.4
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking shell-words v1.1.1
[INFO] [stderr]     Checking aes v0.8.4
[INFO] [stderr]     Checking constant_time_eq v0.1.5
[INFO] [stderr]     Checking jiff v0.2.20
[INFO] [stderr]    Compiling assert_cmd v2.1.2
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]     Checking winnow v0.5.40
[INFO] [stderr]     Checking termtree v0.5.1
[INFO] [stderr]     Checking home v0.5.12
[INFO] [stderr]     Checking socket2 v0.6.2
[INFO] [stderr]     Checking mio v1.1.1
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]    Compiling cc v1.2.56
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking errno v0.3.14
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]     Checking mio v0.8.11
[INFO] [stderr]     Checking tokio v1.49.0
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking signal-hook v0.3.18
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]     Checking password-hash v0.4.2
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking signal-hook-mio v0.2.5
[INFO] [stderr]     Checking console v0.15.11
[INFO] [stderr]     Checking pbkdf2 v0.11.0
[INFO] [stderr]     Checking crossterm v0.27.0
[INFO] [stderr]     Checking time v0.3.47
[INFO] [stderr]     Checking dirs-sys v0.4.1
[INFO] [stderr]     Checking tempfile v3.25.0
[INFO] [stderr]     Checking normalize-line-endings v0.3.0
[INFO] [stderr]     Checking difflib v0.4.0
[INFO] [stderr]     Checking dirs v5.0.1
[INFO] [stderr]     Checking indicatif v0.17.11
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking wait-timeout v0.2.1
[INFO] [stderr]     Checking predicates-tree v1.0.13
[INFO] [stderr]     Checking chrono v0.4.43
[INFO] [stderr]     Checking glob v0.3.3
[INFO] [stderr]     Checking terminal_size v0.3.0
[INFO] [stderr]     Checking which v6.0.3
[INFO] [stderr]    Compiling openssl-sys v0.9.111
[INFO] [stderr]    Compiling libz-sys v1.1.23
[INFO] [stderr]    Compiling zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]    Compiling libssh2-sys v0.3.1
[INFO] [stderr]    Compiling bzip2-sys v0.1.13+1.0.8
[INFO] [stderr]    Compiling libgit2-sys v0.16.2+1.7.2
[INFO] [stderr]     Checking bzip2 v0.4.4
[INFO] [stderr]     Checking regex v1.12.3
[INFO] [stderr]     Checking bstr v1.12.1
[INFO] [stderr]     Checking env_filter v1.0.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]     Checking env_logger v0.11.9
[INFO] [stderr]     Checking predicates v3.1.4
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling strum_macros v0.25.3
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling clap_derive v4.5.55
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking h2 v0.3.27
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]     Checking strum v0.25.0
[INFO] [stderr]     Checking ratatui v0.24.0
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking dialoguer v0.11.0
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking clap v4.5.60
[INFO] [stderr]     Checking zstd v0.11.2+zstd.1.5.2
[INFO] [stderr]     Checking zip v0.6.6
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]     Checking icu_properties v2.1.2
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking hyper v0.14.32
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking serde_yaml v0.9.34+deprecated
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking toml_edit v0.21.1
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking git2 v0.18.3
[INFO] [stderr]     Checking hyper-tls v0.5.0
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking reqwest v0.11.27
[INFO] [stderr]     Checking devflow v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]   --> tests/integration.rs:19:28
[INFO] [stdout]    |
[INFO] [stdout] 19 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]    |                            ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]   --> tests/integration.rs:29:28
[INFO] [stdout]    |
[INFO] [stdout] 29 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]    |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]   --> tests/integration.rs:46:28
[INFO] [stdout]    |
[INFO] [stdout] 46 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]    |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]   --> tests/integration.rs:60:28
[INFO] [stdout]    |
[INFO] [stdout] 60 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]    |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]   --> tests/integration.rs:74:28
[INFO] [stdout]    |
[INFO] [stdout] 74 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]    |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]   --> tests/integration.rs:88:28
[INFO] [stdout]    |
[INFO] [stdout] 88 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]    |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:102:28
[INFO] [stdout]     |
[INFO] [stdout] 102 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:116:28
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:138:28
[INFO] [stdout]     |
[INFO] [stdout] 138 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:152:28
[INFO] [stdout]     |
[INFO] [stdout] 152 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:167:28
[INFO] [stdout]     |
[INFO] [stdout] 167 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:192:28
[INFO] [stdout]     |
[INFO] [stdout] 192 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:208:28
[INFO] [stdout]     |
[INFO] [stdout] 208 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:227:28
[INFO] [stdout]     |
[INFO] [stdout] 227 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:248:28
[INFO] [stdout]     |
[INFO] [stdout] 248 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:267:28
[INFO] [stdout]     |
[INFO] [stdout] 267 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:301:28
[INFO] [stdout]     |
[INFO] [stdout] 301 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:315:28
[INFO] [stdout]     |
[INFO] [stdout] 315 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:327:28
[INFO] [stdout]     |
[INFO] [stdout] 327 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:352:28
[INFO] [stdout]     |
[INFO] [stdout] 352 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:367:28
[INFO] [stdout]     |
[INFO] [stdout] 367 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:388:28
[INFO] [stdout]     |
[INFO] [stdout] 388 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:398:28
[INFO] [stdout]     |
[INFO] [stdout] 398 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:409:28
[INFO] [stdout]     |
[INFO] [stdout] 409 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:424:28
[INFO] [stdout]     |
[INFO] [stdout] 424 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:450:28
[INFO] [stdout]     |
[INFO] [stdout] 450 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:487:28
[INFO] [stdout]     |
[INFO] [stdout] 487 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:510:28
[INFO] [stdout]     |
[INFO] [stdout] 510 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:524:32
[INFO] [stdout]     |
[INFO] [stdout] 524 |         let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:537:28
[INFO] [stdout]     |
[INFO] [stdout] 537 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:550:28
[INFO] [stdout]     |
[INFO] [stdout] 550 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:567:32
[INFO] [stdout]     |
[INFO] [stdout] 567 |         let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:583:28
[INFO] [stdout]     |
[INFO] [stdout] 583 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:597:28
[INFO] [stdout]     |
[INFO] [stdout] 597 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:604:28
[INFO] [stdout]     |
[INFO] [stdout] 604 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:611:28
[INFO] [stdout]     |
[INFO] [stdout] 611 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:619:28
[INFO] [stdout]     |
[INFO] [stdout] 619 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:638:28
[INFO] [stdout]     |
[INFO] [stdout] 638 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:661:28
[INFO] [stdout]     |
[INFO] [stdout] 661 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:695:28
[INFO] [stdout]     |
[INFO] [stdout] 695 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/integration.rs:723:28
[INFO] [stdout]     |
[INFO] [stdout] 723 |     let mut cmd = Command::cargo_bin("devflow").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Modifier`
[INFO] [stdout]  --> src/tui/widgets/panel.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 |     style::{Modifier, Style},
[INFO] [stdout]   |             ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Gauge` and `text::Line`
[INFO] [stdout]   --> src/tui/widgets/progress.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     text::Line,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 12 |     widgets::{Block, Borders, Gauge, LineGauge, Paragraph, Widget},
[INFO] [stdout]    |                               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `header::HeaderWidget`
[INFO] [stdout]   --> src/tui/widgets/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use header::HeaderWidget;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sidebar::SidebarWidget`
[INFO] [stdout]   --> src/tui/widgets/mod.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use sidebar::SidebarWidget;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PanelStyle` and `Panel`
[INFO] [stdout]   --> src/tui/widgets/mod.rs:15:17
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use panel::{Panel, PanelStyle};
[INFO] [stdout]    |                 ^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ListStyle` and `SelectableList`
[INFO] [stdout]   --> src/tui/widgets/mod.rs:16:16
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use list::{SelectableList, ListStyle};
[INFO] [stdout]    |                ^^^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ProgressWidget` and `SpinnerWidget`
[INFO] [stdout]   --> src/tui/widgets/mod.rs:17:20
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use progress::{ProgressWidget, SpinnerWidget};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Modifier`
[INFO] [stdout]  --> src/tui/widgets/panel.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 |     style::{Modifier, Style},
[INFO] [stdout]   |             ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Gauge` and `text::Line`
[INFO] [stdout]   --> src/tui/widgets/progress.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     text::Line,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 12 |     widgets::{Block, Borders, Gauge, LineGauge, Paragraph, Widget},
[INFO] [stdout]    |                               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `header::HeaderWidget`
[INFO] [stdout]   --> src/tui/widgets/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use header::HeaderWidget;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sidebar::SidebarWidget`
[INFO] [stdout]   --> src/tui/widgets/mod.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use sidebar::SidebarWidget;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PanelStyle` and `Panel`
[INFO] [stdout]   --> src/tui/widgets/mod.rs:15:17
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use panel::{Panel, PanelStyle};
[INFO] [stdout]    |                 ^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ListStyle` and `SelectableList`
[INFO] [stdout]   --> src/tui/widgets/mod.rs:16:16
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use list::{SelectableList, ListStyle};
[INFO] [stdout]    |                ^^^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ProgressWidget` and `SpinnerWidget`
[INFO] [stdout]   --> src/tui/widgets/mod.rs:17:20
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use progress::{ProgressWidget, SpinnerWidget};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `message` and `json_data` are never read
[INFO] [stdout]   --> src/commands/mod.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct CommandResult {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub message: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 34 |     /// Données JSON optionnelles
[INFO] [stdout] 35 |     pub json_data: Option<serde_json::Value>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CommandResult` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `success`, `error`, `with_data`, and `with_duration` are never used
[INFO] [stdout]    --> src/commands/mod.rs:73:12
[INFO] [stdout]     |
[INFO] [stdout]  71 | impl StructuredResult {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout]  72 |     /// Crée un résultat de succès
[INFO] [stdout]  73 |     pub fn success(command: &str, message: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  84 |     pub fn error(command: &str, message: &str) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub fn with_data(mut self, data: serde_json::Value) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn with_duration(mut self, duration_ms: u64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `export_logs` is never used
[INFO] [stdout]    --> src/commands/logs.rs:352:8
[INFO] [stdout]     |
[INFO] [stdout] 352 | pub fn export_logs(output_file: &str, level: &str) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `set_version`, and `with_settings` are never used
[INFO] [stdout]    --> src/config/settings.rs:245:12
[INFO] [stdout]     |
[INFO] [stdout] 243 | impl ProjectConfig {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 244 |     /// Create a new project configuration
[INFO] [stdout] 245 |     pub fn new(name: &str, template: &str) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     pub fn set_version(&mut self, version: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 261 |     pub fn with_settings(mut self, settings: ProjectSettings) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/tui/events.rs:53:11
[INFO] [stdout]    |
[INFO] [stdout] 53 |     Input(char),
[INFO] [stdout]    |     ----- ^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Action` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 53 -     Input(char),
[INFO] [stdout] 53 +     Input(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ScrollDown` and `ScrollUp` are never constructed
[INFO] [stdout]   --> src/tui/events.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum Action {
[INFO] [stdout]    |          ------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 41 |     ScrollDown,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 42 |     /// Défilement vers le haut
[INFO] [stdout] 43 |     ScrollUp,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Action` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OutputMessage` is never used
[INFO] [stdout]   --> src/tui/runner.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub enum OutputMessage {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CommandRunner` is never constructed
[INFO] [stdout]   --> src/tui/runner.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct CommandRunner {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `run`, `execute_command`, `try_recv`, `recv`, and `has_messages` are never used
[INFO] [stdout]    --> src/tui/runner.rs:38:12
[INFO] [stdout]     |
[INFO] [stdout]  36 | impl CommandRunner {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  37 |     /// Exécute une commande de manière asynchrone
[INFO] [stdout]  38 |     pub fn run(name: &str, args: Vec<String>) -> Result<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  56 |     fn execute_command(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn try_recv(&self) -> Option<OutputMessage> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn recv(&self) -> Result<OutputMessage> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn has_messages(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_command_with_state` is never used
[INFO] [stdout]    --> src/tui/runner.rs:129:8
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub fn run_command_with_state(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `process_runner_messages` is never used
[INFO] [stdout]    --> src/tui/runner.rs:142:8
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub fn process_runner_messages(runner: &CommandRunner, state: &mut AppState) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProgressTracker` is never constructed
[INFO] [stdout]    --> src/tui/runner.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout] 182 | pub struct ProgressTracker {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/tui/runner.rs:191:12
[INFO] [stdout]     |
[INFO] [stdout] 189 | impl ProgressTracker {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] 190 |     /// Crée un nouveau tracker
[INFO] [stdout] 191 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 202 |     pub fn with_total_steps(mut self, steps: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn step(&mut self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn update(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 219 |     pub fn percentage(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 233 |     pub fn should_update(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 238 |     pub fn elapsed_formatted(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_create_dialog` is never used
[INFO] [stdout]    --> src/tui/screens/projects.rs:147:8
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub fn render_create_dialog(frame: &mut Frame, state: &AppState) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_delete_confirm` is never used
[INFO] [stdout]    --> src/tui/screens/projects.rs:185:8
[INFO] [stdout]     |
[INFO] [stdout] 185 | pub fn render_delete_confirm(frame: &mut Frame, state: &AppState) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `centered_rect` is never used
[INFO] [stdout]    --> src/tui/screens/projects.rs:222:4
[INFO] [stdout]     |
[INFO] [stdout] 222 | fn centered_rect(percent_x: u16, percent_y: u16, r: Rect) -> Rect {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_action` is never used
[INFO] [stdout]    --> src/tui/screens/projects.rs:243:8
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub fn handle_action(state: &mut AppState, action: crate::tui::events::Action) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Editing` is never constructed
[INFO] [stdout]   --> src/tui/state.rs:75:5
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub enum Mode {
[INFO] [stdout]    |          ---- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 75 |     Editing,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Mode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `new_project_name` and `selected_template` are never read
[INFO] [stdout]    --> src/tui/state.rs:128:9
[INFO] [stdout]     |
[INFO] [stdout] 122 | pub struct ProjectsState {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub new_project_name: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 129 |     /// Template sélectionné pour la création
[INFO] [stdout] 130 |     pub selected_template: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ProjectsState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `select_next`, `select_previous`, and `next_template` are never used
[INFO] [stdout]    --> src/tui/state.rs:145:12
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl ProjectsState {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn select_next(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub fn select_previous(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn next_template(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `args` is never read
[INFO] [stdout]    --> src/tui/state.rs:383:9
[INFO] [stdout]     |
[INFO] [stdout] 379 | pub struct RunningCommand {
[INFO] [stdout]     |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 383 |     pub args: Vec<String>,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RunningCommand` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `timestamp` is never read
[INFO] [stdout]    --> src/tui/state.rs:398:9
[INFO] [stdout]     |
[INFO] [stdout] 390 | pub struct ExecutedCommand {
[INFO] [stdout]     |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 398 |     pub timestamp: chrono::DateTime<chrono::Local>,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ExecutedCommand` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `LogEntry` is never used
[INFO] [stdout]    --> src/tui/state.rs:413:10
[INFO] [stdout]     |
[INFO] [stdout] 413 | pub type LogEntry = LogMessage;
[INFO] [stdout]     |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `color` and `prefix` are never used
[INFO] [stdout]    --> src/tui/state.rs:433:12
[INFO] [stdout]     |
[INFO] [stdout] 431 | impl LogLevel {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] 432 |     /// Retourne la couleur associée au niveau
[INFO] [stdout] 433 |     pub fn color(&self) -> ratatui::style::Color {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 445 |     pub fn prefix(&self) -> &'static str {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HeaderWidget` is never constructed
[INFO] [stdout]   --> src/tui/widgets/header.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct HeaderWidget {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_subtitle`, `hide_version`, and `with_version` are never used
[INFO] [stdout]   --> src/tui/widgets/header.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl HeaderWidget {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 25 |     /// Crée un nouvel en-tête
[INFO] [stdout] 26 |     pub fn new(title: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn with_subtitle(mut self, subtitle: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn hide_version(mut self) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn with_version(mut self, version: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_header` is never used
[INFO] [stdout]   --> src/tui/widgets/header.rs:99:8
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub fn default_header() -> HeaderWidget {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SidebarWidget` is never constructed
[INFO] [stdout]   --> src/tui/widgets/sidebar.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct SidebarWidget {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `selected`, `focused`, and `with_title` are never used
[INFO] [stdout]   --> src/tui/widgets/sidebar.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl SidebarWidget {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 26 |     /// Crée une nouvelle sidebar
[INFO] [stdout] 27 |     pub fn new(tabs: Vec<Tab>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn selected(mut self, index: usize) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn focused(mut self, focused: bool) -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn with_title(mut self, title: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PanelStyle` is never used
[INFO] [stdout]   --> src/tui/widgets/panel.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub enum PanelStyle {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `color` is never used
[INFO] [stdout]   --> src/tui/widgets/panel.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl PanelStyle {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] 33 |     /// Retourne la couleur associée
[INFO] [stdout] 34 |     fn color(&self) -> ratatui::style::Color {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Panel` is never constructed
[INFO] [stdout]   --> src/tui/widgets/panel.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub struct Panel<'a> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `title`, `content`, `style`, `border_type`, and `alignment` are never used
[INFO] [stdout]   --> src/tui/widgets/panel.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 55 | impl<'a> Panel<'a> {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 56 |     /// Crée un nouveau panneau
[INFO] [stdout] 57 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn title(mut self, title: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub fn content(mut self, content: Vec<Line<'a>>) -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn style(mut self, style: PanelStyle) -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub fn border_type(mut self, border_type: BorderType) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 92 |     pub fn alignment(mut self, alignment: ratatui::layout::Alignment) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `modal_panel` is never used
[INFO] [stdout]    --> src/tui/widgets/panel.rs:121:8
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub fn modal_panel<'a>(title: impl Into<String>, content: Vec<Line<'a>>) -> Panel<'a> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clear_area` is never used
[INFO] [stdout]    --> src/tui/widgets/panel.rs:130:8
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub fn clear_area(area: Rect, buf: &mut Buffer) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ListStyle` is never used
[INFO] [stdout]   --> src/tui/widgets/list.rs:18:10
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum ListStyle {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SelectableList` is never constructed
[INFO] [stdout]   --> src/tui/widgets/list.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct SelectableList {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `selected`, `title`, `style`, and `highlight_symbol` are never used
[INFO] [stdout]   --> src/tui/widgets/list.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl SelectableList {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 37 |     /// Crée une nouvelle liste
[INFO] [stdout] 38 |     pub fn new(items: Vec<String>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn selected(mut self, index: usize) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn title(mut self, title: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn style(mut self, style: ListStyle) -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub fn highlight_symbol(mut self, symbol: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `simple_list` is never used
[INFO] [stdout]    --> src/tui/widgets/list.rs:134:8
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub fn simple_list(items: Vec<String>, selected: Option<usize>) -> SelectableList {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProgressWidget` is never constructed
[INFO] [stdout]   --> src/tui/widgets/progress.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct ProgressWidget {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ProgressStyle` is never used
[INFO] [stdout]   --> src/tui/widgets/progress.rs:27:10
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub enum ProgressStyle {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `color` is never used
[INFO] [stdout]   --> src/tui/widgets/progress.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | impl ProgressStyle {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 41 |     fn color(&self) -> ratatui::style::Color {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `label`, `show_percentage`, and `style` are never used
[INFO] [stdout]   --> src/tui/widgets/progress.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | impl ProgressWidget {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 53 |     /// Crée une nouvelle barre de progression
[INFO] [stdout] 54 |     pub fn new(progress: u8) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub fn label(mut self, label: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn show_percentage(mut self, show: bool) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn style(mut self, style: ProgressStyle) -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SpinnerWidget` is never constructed
[INFO] [stdout]    --> src/tui/widgets/progress.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub struct SpinnerWidget {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_frames`, `tick`, and `current` are never used
[INFO] [stdout]    --> src/tui/widgets/progress.rs:116:12
[INFO] [stdout]     |
[INFO] [stdout] 114 | impl SpinnerWidget {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 115 |     /// Crée un nouveau spinner
[INFO] [stdout] 116 |     pub fn new(message: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn with_frames(mut self, frames: Vec<&'static str>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn tick(&mut self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     fn current(&self) -> &str {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `simple_progress` is never used
[INFO] [stdout]    --> src/tui/widgets/progress.rs:154:8
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub fn simple_progress(progress: u8) -> ProgressWidget {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_spinner` is never used
[INFO] [stdout]    --> src/tui/widgets/progress.rs:159:8
[INFO] [stdout]     |
[INFO] [stdout] 159 | pub fn default_spinner(message: impl Into<String>) -> SpinnerWidget {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_command` is never used
[INFO] [stdout]   --> src/utils/mod.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn check_command(cmd: &str) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_rust_project` is never used
[INFO] [stdout]   --> src/utils/mod.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub fn is_rust_project() -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_project_name` is never used
[INFO] [stdout]   --> src/utils/mod.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub fn get_project_name() -> Option<String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_project_version` is never used
[INFO] [stdout]   --> src/utils/mod.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn get_project_version() -> Option<String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_duration` is never used
[INFO] [stdout]   --> src/utils/mod.rs:46:8
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub fn format_duration(duration: std::time::Duration) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `truncate` is never used
[INFO] [stdout]   --> src/utils/mod.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub fn truncate(s: &str, max_len: usize) -> String {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `supports_color` is never used
[INFO] [stdout]   --> src/utils/mod.rs:71:8
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub fn supports_color() -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `terminal_width` is never used
[INFO] [stdout]   --> src/utils/mod.rs:82:8
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub fn terminal_width() -> usize {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `center_text` is never used
[INFO] [stdout]   --> src/utils/mod.rs:89:8
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub fn center_text(text: &str, width: usize) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `separator_line` is never used
[INFO] [stdout]    --> src/utils/mod.rs:100:8
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn separator_line(width: Option<usize>) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_box` is never used
[INFO] [stdout]    --> src/utils/mod.rs:106:8
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub fn print_box(title: &str, content: &[&str]) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_kebab_case` is never used
[INFO] [stdout]    --> src/utils/mod.rs:163:8
[INFO] [stdout]     |
[INFO] [stdout] 163 | pub fn to_kebab_case(s: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_snake_case` is never used
[INFO] [stdout]    --> src/utils/mod.rs:170:8
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub fn to_snake_case(s: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `current_dir` is never used
[INFO] [stdout]    --> src/utils/mod.rs:177:8
[INFO] [stdout]     |
[INFO] [stdout] 177 | pub fn current_dir() -> Result<std::path::PathBuf> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `file_exists` is never used
[INFO] [stdout]    --> src/utils/mod.rs:183:8
[INFO] [stdout]     |
[INFO] [stdout] 183 | pub fn file_exists(path: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_file` is never used
[INFO] [stdout]    --> src/utils/mod.rs:188:8
[INFO] [stdout]     |
[INFO] [stdout] 188 | pub fn read_file(path: &str) -> Result<String> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_file` is never used
[INFO] [stdout]    --> src/utils/mod.rs:194:8
[INFO] [stdout]     |
[INFO] [stdout] 194 | pub fn write_file(path: &str, content: &str) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_dir_all` is never used
[INFO] [stdout]    --> src/utils/mod.rs:200:8
[INFO] [stdout]     |
[INFO] [stdout] 200 | pub fn create_dir_all(path: &str) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `remove_dir_all` is never used
[INFO] [stdout]    --> src/utils/mod.rs:206:8
[INFO] [stdout]     |
[INFO] [stdout] 206 | pub fn remove_dir_all(path: &str) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `copy_file` is never used
[INFO] [stdout]    --> src/utils/mod.rs:212:8
[INFO] [stdout]     |
[INFO] [stdout] 212 | pub fn copy_file(src: &str, dst: &str) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `file_size` is never used
[INFO] [stdout]    --> src/utils/mod.rs:219:8
[INFO] [stdout]     |
[INFO] [stdout] 219 | pub fn file_size(path: &str) -> Result<u64> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_file_size` is never used
[INFO] [stdout]    --> src/utils/mod.rs:226:8
[INFO] [stdout]     |
[INFO] [stdout] 226 | pub fn format_file_size(bytes: u64) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `current_timestamp` is never used
[INFO] [stdout]    --> src/utils/mod.rs:241:8
[INFO] [stdout]     |
[INFO] [stdout] 241 | pub fn current_timestamp() -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_timestamp` is never used
[INFO] [stdout]    --> src/utils/mod.rs:246:8
[INFO] [stdout]     |
[INFO] [stdout] 246 | pub fn parse_timestamp(ts: &str) -> Result<chrono::DateTime<chrono::Local>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_id` is never used
[INFO] [stdout]    --> src/utils/mod.rs:253:8
[INFO] [stdout]     |
[INFO] [stdout] 253 | pub fn generate_id() -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `env_or_default` is never used
[INFO] [stdout]    --> src/utils/mod.rs:265:8
[INFO] [stdout]     |
[INFO] [stdout] 265 | pub fn env_or_default(var: &str, default: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `env_is_set` is never used
[INFO] [stdout]    --> src/utils/mod.rs:270:8
[INFO] [stdout]     |
[INFO] [stdout] 270 | pub fn env_is_set(var: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_command` is never used
[INFO] [stdout]    --> src/utils/mod.rs:275:8
[INFO] [stdout]     |
[INFO] [stdout] 275 | pub fn run_command(cmd: &str, args: &[&str]) -> Result<std::process::Output> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_command_status` is never used
[INFO] [stdout]    --> src/utils/mod.rs:283:8
[INFO] [stdout]     |
[INFO] [stdout] 283 | pub fn run_command_status(cmd: &str, args: &[&str]) -> Result<bool> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sleep_ms` is never used
[INFO] [stdout]    --> src/utils/mod.rs:293:8
[INFO] [stdout]     |
[INFO] [stdout] 293 | pub fn sleep_ms(ms: u64) {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sleep_secs` is never used
[INFO] [stdout]    --> src/utils/mod.rs:298:8
[INFO] [stdout]     |
[INFO] [stdout] 298 | pub fn sleep_secs(secs: u64) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `disable_colors` is never used
[INFO] [stdout]   --> src/utils/colors.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn disable_colors() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `enable_colors` is never used
[INFO] [stdout]   --> src/utils/colors.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn enable_colors() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `reset_color_control` is never used
[INFO] [stdout]   --> src/utils/colors.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub fn reset_color_control() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_bold` is never used
[INFO] [stdout]   --> src/utils/colors.rs:87:8
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub fn print_bold(message: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_italic` is never used
[INFO] [stdout]   --> src/utils/colors.rs:96:8
[INFO] [stdout]    |
[INFO] [stdout] 96 | pub fn print_italic(message: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_colored` is never used
[INFO] [stdout]    --> src/utils/colors.rs:105:8
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub fn print_colored(message: &str, color: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `green` is never used
[INFO] [stdout]    --> src/utils/colors.rs:137:8
[INFO] [stdout]     |
[INFO] [stdout] 137 | pub fn green(text: &str) -> ColoredString {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `red` is never used
[INFO] [stdout]    --> src/utils/colors.rs:146:8
[INFO] [stdout]     |
[INFO] [stdout] 146 | pub fn red(text: &str) -> ColoredString {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `yellow` is never used
[INFO] [stdout]    --> src/utils/colors.rs:155:8
[INFO] [stdout]     |
[INFO] [stdout] 155 | pub fn yellow(text: &str) -> ColoredString {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `blue` is never used
[INFO] [stdout]    --> src/utils/colors.rs:164:8
[INFO] [stdout]     |
[INFO] [stdout] 164 | pub fn blue(text: &str) -> ColoredString {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cyan` is never used
[INFO] [stdout]    --> src/utils/colors.rs:173:8
[INFO] [stdout]     |
[INFO] [stdout] 173 | pub fn cyan(text: &str) -> ColoredString {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `magenta` is never used
[INFO] [stdout]    --> src/utils/colors.rs:182:8
[INFO] [stdout]     |
[INFO] [stdout] 182 | pub fn magenta(text: &str) -> ColoredString {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bold` is never used
[INFO] [stdout]    --> src/utils/colors.rs:191:8
[INFO] [stdout]     |
[INFO] [stdout] 191 | pub fn bold(text: &str) -> ColoredString {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `underline` is never used
[INFO] [stdout]    --> src/utils/colors.rs:200:8
[INFO] [stdout]     |
[INFO] [stdout] 200 | pub fn underline(text: &str) -> ColoredString {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `italic` is never used
[INFO] [stdout]    --> src/utils/colors.rs:209:8
[INFO] [stdout]     |
[INFO] [stdout] 209 | pub fn italic(text: &str) -> ColoredString {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bold_green` is never used
[INFO] [stdout]    --> src/utils/colors.rs:218:8
[INFO] [stdout]     |
[INFO] [stdout] 218 | pub fn bold_green(text: &str) -> ColoredString {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bold_red` is never used
[INFO] [stdout]    --> src/utils/colors.rs:227:8
[INFO] [stdout]     |
[INFO] [stdout] 227 | pub fn bold_red(text: &str) -> ColoredString {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bold_yellow` is never used
[INFO] [stdout]    --> src/utils/colors.rs:236:8
[INFO] [stdout]     |
[INFO] [stdout] 236 | pub fn bold_yellow(text: &str) -> ColoredString {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bold_blue` is never used
[INFO] [stdout]    --> src/utils/colors.rs:245:8
[INFO] [stdout]     |
[INFO] [stdout] 245 | pub fn bold_blue(text: &str) -> ColoredString {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bold_cyan` is never used
[INFO] [stdout]    --> src/utils/colors.rs:254:8
[INFO] [stdout]     |
[INFO] [stdout] 254 | pub fn bold_cyan(text: &str) -> ColoredString {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_success` is never used
[INFO] [stdout]    --> src/utils/colors.rs:267:8
[INFO] [stdout]     |
[INFO] [stdout] 267 | pub fn icon_success() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_error` is never used
[INFO] [stdout]    --> src/utils/colors.rs:272:8
[INFO] [stdout]     |
[INFO] [stdout] 272 | pub fn icon_error() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_warning` is never used
[INFO] [stdout]    --> src/utils/colors.rs:277:8
[INFO] [stdout]     |
[INFO] [stdout] 277 | pub fn icon_warning() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_info` is never used
[INFO] [stdout]    --> src/utils/colors.rs:282:8
[INFO] [stdout]     |
[INFO] [stdout] 282 | pub fn icon_info() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_arrow` is never used
[INFO] [stdout]    --> src/utils/colors.rs:287:8
[INFO] [stdout]     |
[INFO] [stdout] 287 | pub fn icon_arrow() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_check` is never used
[INFO] [stdout]    --> src/utils/colors.rs:292:8
[INFO] [stdout]     |
[INFO] [stdout] 292 | pub fn icon_check() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_cross` is never used
[INFO] [stdout]    --> src/utils/colors.rs:297:8
[INFO] [stdout]     |
[INFO] [stdout] 297 | pub fn icon_cross() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_bullet` is never used
[INFO] [stdout]    --> src/utils/colors.rs:302:8
[INFO] [stdout]     |
[INFO] [stdout] 302 | pub fn icon_bullet() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_folder` is never used
[INFO] [stdout]    --> src/utils/colors.rs:307:8
[INFO] [stdout]     |
[INFO] [stdout] 307 | pub fn icon_folder() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_file` is never used
[INFO] [stdout]    --> src/utils/colors.rs:312:8
[INFO] [stdout]     |
[INFO] [stdout] 312 | pub fn icon_file() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_git` is never used
[INFO] [stdout]    --> src/utils/colors.rs:317:8
[INFO] [stdout]     |
[INFO] [stdout] 317 | pub fn icon_git() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_build` is never used
[INFO] [stdout]    --> src/utils/colors.rs:322:8
[INFO] [stdout]     |
[INFO] [stdout] 322 | pub fn icon_build() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_test` is never used
[INFO] [stdout]    --> src/utils/colors.rs:327:8
[INFO] [stdout]     |
[INFO] [stdout] 327 | pub fn icon_test() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_deploy` is never used
[INFO] [stdout]    --> src/utils/colors.rs:332:8
[INFO] [stdout]     |
[INFO] [stdout] 332 | pub fn icon_deploy() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_log` is never used
[INFO] [stdout]    --> src/utils/colors.rs:337:8
[INFO] [stdout]     |
[INFO] [stdout] 337 | pub fn icon_log() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_status` is never used
[INFO] [stdout]    --> src/utils/colors.rs:342:8
[INFO] [stdout]     |
[INFO] [stdout] 342 | pub fn icon_status() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_separator` is never used
[INFO] [stdout]    --> src/utils/colors.rs:351:8
[INFO] [stdout]     |
[INFO] [stdout] 351 | pub fn print_separator() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_box` is never used
[INFO] [stdout]    --> src/utils/colors.rs:361:8
[INFO] [stdout]     |
[INFO] [stdout] 361 | pub fn print_box(title: &str, lines: &[&str]) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_list` is never used
[INFO] [stdout]    --> src/utils/colors.rs:385:8
[INFO] [stdout]     |
[INFO] [stdout] 385 | pub fn print_list(items: &[&str]) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_key_value` is never used
[INFO] [stdout]    --> src/utils/colors.rs:392:8
[INFO] [stdout]     |
[INFO] [stdout] 392 | pub fn print_key_value(key: &str, value: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_step` is never used
[INFO] [stdout]    --> src/utils/colors.rs:401:8
[INFO] [stdout]     |
[INFO] [stdout] 401 | pub fn print_step(step: usize, total: usize, message: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_logger` is never used
[INFO] [stdout]   --> src/utils/logger.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn init_logger() {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_logger_with_level` is never used
[INFO] [stdout]   --> src/utils/logger.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn init_logger_with_level(level: LevelFilter) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_file_logger` is never used
[INFO] [stdout]   --> src/utils/logger.rs:63:8
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub fn init_file_logger(log_file: &str) -> Result<()> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `current_log_level` is never used
[INFO] [stdout]   --> src/utils/logger.rs:85:8
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub fn current_log_level() -> LevelFilter {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_log_enabled` is never used
[INFO] [stdout]   --> src/utils/logger.rs:90:8
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub fn is_log_enabled(level: log::Level) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_command` is never used
[INFO] [stdout]   --> src/utils/logger.rs:95:8
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub fn log_command(command: &str, args: &[&str]) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_operation_start` is never used
[INFO] [stdout]    --> src/utils/logger.rs:100:8
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn log_operation_start(operation: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_operation_end` is never used
[INFO] [stdout]    --> src/utils/logger.rs:105:8
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub fn log_operation_end(operation: &str, success: bool) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_error` is never used
[INFO] [stdout]    --> src/utils/logger.rs:114:8
[INFO] [stdout]     |
[INFO] [stdout] 114 | pub fn log_error(operation: &str, error: &anyhow::Error) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_performance` is never used
[INFO] [stdout]    --> src/utils/logger.rs:124:8
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub fn log_performance(operation: &str, duration_ms: u64) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_config` is never used
[INFO] [stdout]    --> src/utils/logger.rs:129:8
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub fn log_config(key: &str, value: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_user_action` is never used
[INFO] [stdout]    --> src/utils/logger.rs:134:8
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub fn log_user_action(action: &str, details: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_structured_logger` is never used
[INFO] [stdout]    --> src/utils/logger.rs:139:8
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub fn create_structured_logger() -> StructuredLogger {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StructuredLogger` is never constructed
[INFO] [stdout]    --> src/utils/logger.rs:144:12
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub struct StructuredLogger {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LogEntry` is never constructed
[INFO] [stdout]    --> src/utils/logger.rs:149:8
[INFO] [stdout]     |
[INFO] [stdout] 149 | struct LogEntry {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `log`, `to_json`, and `save_to_file` are never used
[INFO] [stdout]    --> src/utils/logger.rs:157:12
[INFO] [stdout]     |
[INFO] [stdout] 156 | impl StructuredLogger {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 157 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub fn log(&mut self, level: &str, target: &str, message: &str) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn to_json(&self) -> Result<String> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn save_to_file(&self, path: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_log_level_from_str` is never used
[INFO] [stdout]    --> src/utils/logger.rs:192:8
[INFO] [stdout]     |
[INFO] [stdout] 192 | pub fn set_log_level_from_str(level: &str) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_log_level` is never used
[INFO] [stdout]    --> src/utils/logger.rs:210:8
[INFO] [stdout]     |
[INFO] [stdout] 210 | pub fn show_log_level() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `list_log_levels` is never used
[INFO] [stdout]    --> src/utils/logger.rs:216:8
[INFO] [stdout]     |
[INFO] [stdout] 216 | pub fn list_log_levels() -> Vec<&'static str> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_progress_bar` is never used
[INFO] [stdout]   --> src/utils/progress.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn create_progress_bar(total: u64) -> ProgressBar {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_simple_progress_bar` is never used
[INFO] [stdout]   --> src/utils/progress.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn create_simple_progress_bar(total: u64) -> ProgressBar {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_download_progress_bar` is never used
[INFO] [stdout]   --> src/utils/progress.rs:61:8
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub fn create_download_progress_bar(total_bytes: u64) -> ProgressBar {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_multi_step_progress` is never used
[INFO] [stdout]   --> src/utils/progress.rs:74:8
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub fn create_multi_step_progress(steps: usize) -> ProgressBar {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_hidden_progress_bar` is never used
[INFO] [stdout]   --> src/utils/progress.rs:87:8
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub fn create_hidden_progress_bar(total: u64) -> ProgressBar {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `update_progress` is never used
[INFO] [stdout]   --> src/utils/progress.rs:93:8
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub fn update_progress(pb: &ProgressBar, position: u64, message: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `increment_progress` is never used
[INFO] [stdout]   --> src/utils/progress.rs:99:8
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub fn increment_progress(pb: &ProgressBar, delta: u64) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `finish_progress_success` is never used
[INFO] [stdout]    --> src/utils/progress.rs:104:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub fn finish_progress_success(pb: ProgressBar, message: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `finish_progress_error` is never used
[INFO] [stdout]    --> src/utils/progress.rs:113:8
[INFO] [stdout]     |
[INFO] [stdout] 113 | pub fn finish_progress_error(pb: ProgressBar, message: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `finish_progress_warning` is never used
[INFO] [stdout]    --> src/utils/progress.rs:122:8
[INFO] [stdout]     |
[INFO] [stdout] 122 | pub fn finish_progress_warning(pb: ProgressBar, message: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `simulate_progress` is never used
[INFO] [stdout]    --> src/utils/progress.rs:131:8
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub fn simulate_progress(message: &str, duration_ms: u64, steps: u64) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_parallel_progress` is never used
[INFO] [stdout]    --> src/utils/progress.rs:147:8
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub fn create_parallel_progress(name: &str, total: u64) -> ProgressBar {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `with_progress` is never used
[INFO] [stdout]    --> src/utils/progress.rs:162:8
[INFO] [stdout]     |
[INFO] [stdout] 162 | pub fn with_progress<F, T>(total: u64, message: &str, f: F) -> T
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_percentage` is never used
[INFO] [stdout]    --> src/utils/progress.rs:176:8
[INFO] [stdout]     |
[INFO] [stdout] 176 | pub fn print_percentage(current: u64, total: u64, width: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_counter` is never used
[INFO] [stdout]    --> src/utils/progress.rs:203:8
[INFO] [stdout]     |
[INFO] [stdout] 203 | pub fn print_counter(current: usize, total: usize, label: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `modern` is never used
[INFO] [stdout]    --> src/utils/progress.rs:224:12
[INFO] [stdout]     |
[INFO] [stdout] 224 |     pub fn modern() -> ProgressStyle {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `minimal` is never used
[INFO] [stdout]    --> src/utils/progress.rs:232:12
[INFO] [stdout]     |
[INFO] [stdout] 232 |     pub fn minimal() -> ProgressStyle {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `detailed` is never used
[INFO] [stdout]    --> src/utils/progress.rs:240:12
[INFO] [stdout]     |
[INFO] [stdout] 240 |     pub fn detailed() -> ProgressStyle {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `download` is never used
[INFO] [stdout]    --> src/utils/progress.rs:248:12
[INFO] [stdout]     |
[INFO] [stdout] 248 |     pub fn download() -> ProgressStyle {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `upload` is never used
[INFO] [stdout]    --> src/utils/progress.rs:256:12
[INFO] [stdout]     |
[INFO] [stdout] 256 |     pub fn upload() -> ProgressStyle {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `message` and `json_data` are never read
[INFO] [stdout]   --> src/commands/mod.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct CommandResult {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub message: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 34 |     /// Données JSON optionnelles
[INFO] [stdout] 35 |     pub json_data: Option<serde_json::Value>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CommandResult` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `success`, `error`, `with_data`, and `with_duration` are never used
[INFO] [stdout]    --> src/commands/mod.rs:73:12
[INFO] [stdout]     |
[INFO] [stdout]  71 | impl StructuredResult {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout]  72 |     /// Crée un résultat de succès
[INFO] [stdout]  73 |     pub fn success(command: &str, message: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  84 |     pub fn error(command: &str, message: &str) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub fn with_data(mut self, data: serde_json::Value) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn with_duration(mut self, duration_ms: u64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `export_logs` is never used
[INFO] [stdout]    --> src/commands/logs.rs:352:8
[INFO] [stdout]     |
[INFO] [stdout] 352 | pub fn export_logs(output_file: &str, level: &str) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_version` and `with_settings` are never used
[INFO] [stdout]    --> src/config/settings.rs:256:12
[INFO] [stdout]     |
[INFO] [stdout] 243 | impl ProjectConfig {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 256 |     pub fn set_version(&mut self, version: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 261 |     pub fn with_settings(mut self, settings: ProjectSettings) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/tui/events.rs:53:11
[INFO] [stdout]    |
[INFO] [stdout] 53 |     Input(char),
[INFO] [stdout]    |     ----- ^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Action` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 53 -     Input(char),
[INFO] [stdout] 53 +     Input(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ScrollDown` and `ScrollUp` are never constructed
[INFO] [stdout]   --> src/tui/events.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum Action {
[INFO] [stdout]    |          ------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 41 |     ScrollDown,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 42 |     /// Défilement vers le haut
[INFO] [stdout] 43 |     ScrollUp,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Action` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OutputMessage` is never used
[INFO] [stdout]   --> src/tui/runner.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub enum OutputMessage {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CommandRunner` is never constructed
[INFO] [stdout]   --> src/tui/runner.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct CommandRunner {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `run`, `execute_command`, `try_recv`, `recv`, and `has_messages` are never used
[INFO] [stdout]    --> src/tui/runner.rs:38:12
[INFO] [stdout]     |
[INFO] [stdout]  36 | impl CommandRunner {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  37 |     /// Exécute une commande de manière asynchrone
[INFO] [stdout]  38 |     pub fn run(name: &str, args: Vec<String>) -> Result<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  56 |     fn execute_command(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn try_recv(&self) -> Option<OutputMessage> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn recv(&self) -> Result<OutputMessage> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn has_messages(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_command_with_state` is never used
[INFO] [stdout]    --> src/tui/runner.rs:129:8
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub fn run_command_with_state(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `process_runner_messages` is never used
[INFO] [stdout]    --> src/tui/runner.rs:142:8
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub fn process_runner_messages(runner: &CommandRunner, state: &mut AppState) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProgressTracker` is never constructed
[INFO] [stdout]    --> src/tui/runner.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout] 182 | pub struct ProgressTracker {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/tui/runner.rs:191:12
[INFO] [stdout]     |
[INFO] [stdout] 189 | impl ProgressTracker {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] 190 |     /// Crée un nouveau tracker
[INFO] [stdout] 191 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 202 |     pub fn with_total_steps(mut self, steps: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn step(&mut self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn update(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 219 |     pub fn percentage(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 233 |     pub fn should_update(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 238 |     pub fn elapsed_formatted(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_create_dialog` is never used
[INFO] [stdout]    --> src/tui/screens/projects.rs:147:8
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub fn render_create_dialog(frame: &mut Frame, state: &AppState) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_delete_confirm` is never used
[INFO] [stdout]    --> src/tui/screens/projects.rs:185:8
[INFO] [stdout]     |
[INFO] [stdout] 185 | pub fn render_delete_confirm(frame: &mut Frame, state: &AppState) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `centered_rect` is never used
[INFO] [stdout]    --> src/tui/screens/projects.rs:222:4
[INFO] [stdout]     |
[INFO] [stdout] 222 | fn centered_rect(percent_x: u16, percent_y: u16, r: Rect) -> Rect {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_action` is never used
[INFO] [stdout]    --> src/tui/screens/projects.rs:243:8
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub fn handle_action(state: &mut AppState, action: crate::tui::events::Action) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Editing` is never constructed
[INFO] [stdout]   --> src/tui/state.rs:75:5
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub enum Mode {
[INFO] [stdout]    |          ---- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 75 |     Editing,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Mode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `new_project_name` and `selected_template` are never read
[INFO] [stdout]    --> src/tui/state.rs:128:9
[INFO] [stdout]     |
[INFO] [stdout] 122 | pub struct ProjectsState {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub new_project_name: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 129 |     /// Template sélectionné pour la création
[INFO] [stdout] 130 |     pub selected_template: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ProjectsState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `select_next`, `select_previous`, and `next_template` are never used
[INFO] [stdout]    --> src/tui/state.rs:145:12
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl ProjectsState {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn select_next(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub fn select_previous(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn next_template(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `args` is never read
[INFO] [stdout]    --> src/tui/state.rs:383:9
[INFO] [stdout]     |
[INFO] [stdout] 379 | pub struct RunningCommand {
[INFO] [stdout]     |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 383 |     pub args: Vec<String>,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RunningCommand` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `timestamp` is never read
[INFO] [stdout]    --> src/tui/state.rs:398:9
[INFO] [stdout]     |
[INFO] [stdout] 390 | pub struct ExecutedCommand {
[INFO] [stdout]     |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 398 |     pub timestamp: chrono::DateTime<chrono::Local>,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ExecutedCommand` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `LogEntry` is never used
[INFO] [stdout]    --> src/tui/state.rs:413:10
[INFO] [stdout]     |
[INFO] [stdout] 413 | pub type LogEntry = LogMessage;
[INFO] [stdout]     |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `color` and `prefix` are never used
[INFO] [stdout]    --> src/tui/state.rs:433:12
[INFO] [stdout]     |
[INFO] [stdout] 431 | impl LogLevel {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] 432 |     /// Retourne la couleur associée au niveau
[INFO] [stdout] 433 |     pub fn color(&self) -> ratatui::style::Color {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 445 |     pub fn prefix(&self) -> &'static str {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HeaderWidget` is never constructed
[INFO] [stdout]   --> src/tui/widgets/header.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct HeaderWidget {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_subtitle`, `hide_version`, and `with_version` are never used
[INFO] [stdout]   --> src/tui/widgets/header.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl HeaderWidget {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 25 |     /// Crée un nouvel en-tête
[INFO] [stdout] 26 |     pub fn new(title: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn with_subtitle(mut self, subtitle: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn hide_version(mut self) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn with_version(mut self, version: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_header` is never used
[INFO] [stdout]   --> src/tui/widgets/header.rs:99:8
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub fn default_header() -> HeaderWidget {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SidebarWidget` is never constructed
[INFO] [stdout]   --> src/tui/widgets/sidebar.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct SidebarWidget {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `selected`, `focused`, and `with_title` are never used
[INFO] [stdout]   --> src/tui/widgets/sidebar.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl SidebarWidget {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 26 |     /// Crée une nouvelle sidebar
[INFO] [stdout] 27 |     pub fn new(tabs: Vec<Tab>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn selected(mut self, index: usize) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn focused(mut self, focused: bool) -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn with_title(mut self, title: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PanelStyle` is never used
[INFO] [stdout]   --> src/tui/widgets/panel.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub enum PanelStyle {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `color` is never used
[INFO] [stdout]   --> src/tui/widgets/panel.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl PanelStyle {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] 33 |     /// Retourne la couleur associée
[INFO] [stdout] 34 |     fn color(&self) -> ratatui::style::Color {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Panel` is never constructed
[INFO] [stdout]   --> src/tui/widgets/panel.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub struct Panel<'a> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `title`, `content`, `style`, `border_type`, and `alignment` are never used
[INFO] [stdout]   --> src/tui/widgets/panel.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 55 | impl<'a> Panel<'a> {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 56 |     /// Crée un nouveau panneau
[INFO] [stdout] 57 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn title(mut self, title: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub fn content(mut self, content: Vec<Line<'a>>) -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn style(mut self, style: PanelStyle) -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub fn border_type(mut self, border_type: BorderType) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 92 |     pub fn alignment(mut self, alignment: ratatui::layout::Alignment) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `modal_panel` is never used
[INFO] [stdout]    --> src/tui/widgets/panel.rs:121:8
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub fn modal_panel<'a>(title: impl Into<String>, content: Vec<Line<'a>>) -> Panel<'a> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clear_area` is never used
[INFO] [stdout]    --> src/tui/widgets/panel.rs:130:8
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub fn clear_area(area: Rect, buf: &mut Buffer) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ListStyle` is never used
[INFO] [stdout]   --> src/tui/widgets/list.rs:18:10
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum ListStyle {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SelectableList` is never constructed
[INFO] [stdout]   --> src/tui/widgets/list.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct SelectableList {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `selected`, `title`, `style`, and `highlight_symbol` are never used
[INFO] [stdout]   --> src/tui/widgets/list.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl SelectableList {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 37 |     /// Crée une nouvelle liste
[INFO] [stdout] 38 |     pub fn new(items: Vec<String>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn selected(mut self, index: usize) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn title(mut self, title: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn style(mut self, style: ListStyle) -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub fn highlight_symbol(mut self, symbol: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `simple_list` is never used
[INFO] [stdout]    --> src/tui/widgets/list.rs:134:8
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub fn simple_list(items: Vec<String>, selected: Option<usize>) -> SelectableList {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProgressWidget` is never constructed
[INFO] [stdout]   --> src/tui/widgets/progress.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct ProgressWidget {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ProgressStyle` is never used
[INFO] [stdout]   --> src/tui/widgets/progress.rs:27:10
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub enum ProgressStyle {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `color` is never used
[INFO] [stdout]   --> src/tui/widgets/progress.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | impl ProgressStyle {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 41 |     fn color(&self) -> ratatui::style::Color {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `label`, `show_percentage`, and `style` are never used
[INFO] [stdout]   --> src/tui/widgets/progress.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | impl ProgressWidget {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 53 |     /// Crée une nouvelle barre de progression
[INFO] [stdout] 54 |     pub fn new(progress: u8) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub fn label(mut self, label: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn show_percentage(mut self, show: bool) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn style(mut self, style: ProgressStyle) -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SpinnerWidget` is never constructed
[INFO] [stdout]    --> src/tui/widgets/progress.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub struct SpinnerWidget {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_frames`, `tick`, and `current` are never used
[INFO] [stdout]    --> src/tui/widgets/progress.rs:116:12
[INFO] [stdout]     |
[INFO] [stdout] 114 | impl SpinnerWidget {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 115 |     /// Crée un nouveau spinner
[INFO] [stdout] 116 |     pub fn new(message: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn with_frames(mut self, frames: Vec<&'static str>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn tick(&mut self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     fn current(&self) -> &str {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `simple_progress` is never used
[INFO] [stdout]    --> src/tui/widgets/progress.rs:154:8
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub fn simple_progress(progress: u8) -> ProgressWidget {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_spinner` is never used
[INFO] [stdout]    --> src/tui/widgets/progress.rs:159:8
[INFO] [stdout]     |
[INFO] [stdout] 159 | pub fn default_spinner(message: impl Into<String>) -> SpinnerWidget {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_command` is never used
[INFO] [stdout]   --> src/utils/mod.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn check_command(cmd: &str) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_rust_project` is never used
[INFO] [stdout]   --> src/utils/mod.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub fn is_rust_project() -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_project_name` is never used
[INFO] [stdout]   --> src/utils/mod.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub fn get_project_name() -> Option<String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_project_version` is never used
[INFO] [stdout]   --> src/utils/mod.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn get_project_version() -> Option<String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_duration` is never used
[INFO] [stdout]   --> src/utils/mod.rs:46:8
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub fn format_duration(duration: std::time::Duration) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `truncate` is never used
[INFO] [stdout]   --> src/utils/mod.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub fn truncate(s: &str, max_len: usize) -> String {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `supports_color` is never used
[INFO] [stdout]   --> src/utils/mod.rs:71:8
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub fn supports_color() -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `terminal_width` is never used
[INFO] [stdout]   --> src/utils/mod.rs:82:8
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub fn terminal_width() -> usize {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `center_text` is never used
[INFO] [stdout]   --> src/utils/mod.rs:89:8
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub fn center_text(text: &str, width: usize) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `separator_line` is never used
[INFO] [stdout]    --> src/utils/mod.rs:100:8
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn separator_line(width: Option<usize>) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_box` is never used
[INFO] [stdout]    --> src/utils/mod.rs:106:8
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub fn print_box(title: &str, content: &[&str]) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_kebab_case` is never used
[INFO] [stdout]    --> src/utils/mod.rs:163:8
[INFO] [stdout]     |
[INFO] [stdout] 163 | pub fn to_kebab_case(s: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_snake_case` is never used
[INFO] [stdout]    --> src/utils/mod.rs:170:8
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub fn to_snake_case(s: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `current_dir` is never used
[INFO] [stdout]    --> src/utils/mod.rs:177:8
[INFO] [stdout]     |
[INFO] [stdout] 177 | pub fn current_dir() -> Result<std::path::PathBuf> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `file_exists` is never used
[INFO] [stdout]    --> src/utils/mod.rs:183:8
[INFO] [stdout]     |
[INFO] [stdout] 183 | pub fn file_exists(path: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_file` is never used
[INFO] [stdout]    --> src/utils/mod.rs:188:8
[INFO] [stdout]     |
[INFO] [stdout] 188 | pub fn read_file(path: &str) -> Result<String> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_file` is never used
[INFO] [stdout]    --> src/utils/mod.rs:194:8
[INFO] [stdout]     |
[INFO] [stdout] 194 | pub fn write_file(path: &str, content: &str) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_dir_all` is never used
[INFO] [stdout]    --> src/utils/mod.rs:200:8
[INFO] [stdout]     |
[INFO] [stdout] 200 | pub fn create_dir_all(path: &str) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `remove_dir_all` is never used
[INFO] [stdout]    --> src/utils/mod.rs:206:8
[INFO] [stdout]     |
[INFO] [stdout] 206 | pub fn remove_dir_all(path: &str) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `copy_file` is never used
[INFO] [stdout]    --> src/utils/mod.rs:212:8
[INFO] [stdout]     |
[INFO] [stdout] 212 | pub fn copy_file(src: &str, dst: &str) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `file_size` is never used
[INFO] [stdout]    --> src/utils/mod.rs:219:8
[INFO] [stdout]     |
[INFO] [stdout] 219 | pub fn file_size(path: &str) -> Result<u64> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_file_size` is never used
[INFO] [stdout]    --> src/utils/mod.rs:226:8
[INFO] [stdout]     |
[INFO] [stdout] 226 | pub fn format_file_size(bytes: u64) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `current_timestamp` is never used
[INFO] [stdout]    --> src/utils/mod.rs:241:8
[INFO] [stdout]     |
[INFO] [stdout] 241 | pub fn current_timestamp() -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_timestamp` is never used
[INFO] [stdout]    --> src/utils/mod.rs:246:8
[INFO] [stdout]     |
[INFO] [stdout] 246 | pub fn parse_timestamp(ts: &str) -> Result<chrono::DateTime<chrono::Local>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_id` is never used
[INFO] [stdout]    --> src/utils/mod.rs:253:8
[INFO] [stdout]     |
[INFO] [stdout] 253 | pub fn generate_id() -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `env_or_default` is never used
[INFO] [stdout]    --> src/utils/mod.rs:265:8
[INFO] [stdout]     |
[INFO] [stdout] 265 | pub fn env_or_default(var: &str, default: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `env_is_set` is never used
[INFO] [stdout]    --> src/utils/mod.rs:270:8
[INFO] [stdout]     |
[INFO] [stdout] 270 | pub fn env_is_set(var: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_command` is never used
[INFO] [stdout]    --> src/utils/mod.rs:275:8
[INFO] [stdout]     |
[INFO] [stdout] 275 | pub fn run_command(cmd: &str, args: &[&str]) -> Result<std::process::Output> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_command_status` is never used
[INFO] [stdout]    --> src/utils/mod.rs:283:8
[INFO] [stdout]     |
[INFO] [stdout] 283 | pub fn run_command_status(cmd: &str, args: &[&str]) -> Result<bool> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sleep_ms` is never used
[INFO] [stdout]    --> src/utils/mod.rs:293:8
[INFO] [stdout]     |
[INFO] [stdout] 293 | pub fn sleep_ms(ms: u64) {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sleep_secs` is never used
[INFO] [stdout]    --> src/utils/mod.rs:298:8
[INFO] [stdout]     |
[INFO] [stdout] 298 | pub fn sleep_secs(secs: u64) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `disable_colors` is never used
[INFO] [stdout]   --> src/utils/colors.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn disable_colors() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `enable_colors` is never used
[INFO] [stdout]   --> src/utils/colors.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn enable_colors() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `reset_color_control` is never used
[INFO] [stdout]   --> src/utils/colors.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub fn reset_color_control() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_bold` is never used
[INFO] [stdout]   --> src/utils/colors.rs:87:8
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub fn print_bold(message: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_italic` is never used
[INFO] [stdout]   --> src/utils/colors.rs:96:8
[INFO] [stdout]    |
[INFO] [stdout] 96 | pub fn print_italic(message: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_colored` is never used
[INFO] [stdout]    --> src/utils/colors.rs:105:8
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub fn print_colored(message: &str, color: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `green` is never used
[INFO] [stdout]    --> src/utils/colors.rs:137:8
[INFO] [stdout]     |
[INFO] [stdout] 137 | pub fn green(text: &str) -> ColoredString {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `red` is never used
[INFO] [stdout]    --> src/utils/colors.rs:146:8
[INFO] [stdout]     |
[INFO] [stdout] 146 | pub fn red(text: &str) -> ColoredString {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `yellow` is never used
[INFO] [stdout]    --> src/utils/colors.rs:155:8
[INFO] [stdout]     |
[INFO] [stdout] 155 | pub fn yellow(text: &str) -> ColoredString {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `blue` is never used
[INFO] [stdout]    --> src/utils/colors.rs:164:8
[INFO] [stdout]     |
[INFO] [stdout] 164 | pub fn blue(text: &str) -> ColoredString {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cyan` is never used
[INFO] [stdout]    --> src/utils/colors.rs:173:8
[INFO] [stdout]     |
[INFO] [stdout] 173 | pub fn cyan(text: &str) -> ColoredString {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `magenta` is never used
[INFO] [stdout]    --> src/utils/colors.rs:182:8
[INFO] [stdout]     |
[INFO] [stdout] 182 | pub fn magenta(text: &str) -> ColoredString {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bold` is never used
[INFO] [stdout]    --> src/utils/colors.rs:191:8
[INFO] [stdout]     |
[INFO] [stdout] 191 | pub fn bold(text: &str) -> ColoredString {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `underline` is never used
[INFO] [stdout]    --> src/utils/colors.rs:200:8
[INFO] [stdout]     |
[INFO] [stdout] 200 | pub fn underline(text: &str) -> ColoredString {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `italic` is never used
[INFO] [stdout]    --> src/utils/colors.rs:209:8
[INFO] [stdout]     |
[INFO] [stdout] 209 | pub fn italic(text: &str) -> ColoredString {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bold_green` is never used
[INFO] [stdout]    --> src/utils/colors.rs:218:8
[INFO] [stdout]     |
[INFO] [stdout] 218 | pub fn bold_green(text: &str) -> ColoredString {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bold_red` is never used
[INFO] [stdout]    --> src/utils/colors.rs:227:8
[INFO] [stdout]     |
[INFO] [stdout] 227 | pub fn bold_red(text: &str) -> ColoredString {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bold_yellow` is never used
[INFO] [stdout]    --> src/utils/colors.rs:236:8
[INFO] [stdout]     |
[INFO] [stdout] 236 | pub fn bold_yellow(text: &str) -> ColoredString {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bold_blue` is never used
[INFO] [stdout]    --> src/utils/colors.rs:245:8
[INFO] [stdout]     |
[INFO] [stdout] 245 | pub fn bold_blue(text: &str) -> ColoredString {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bold_cyan` is never used
[INFO] [stdout]    --> src/utils/colors.rs:254:8
[INFO] [stdout]     |
[INFO] [stdout] 254 | pub fn bold_cyan(text: &str) -> ColoredString {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_success` is never used
[INFO] [stdout]    --> src/utils/colors.rs:267:8
[INFO] [stdout]     |
[INFO] [stdout] 267 | pub fn icon_success() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_error` is never used
[INFO] [stdout]    --> src/utils/colors.rs:272:8
[INFO] [stdout]     |
[INFO] [stdout] 272 | pub fn icon_error() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_warning` is never used
[INFO] [stdout]    --> src/utils/colors.rs:277:8
[INFO] [stdout]     |
[INFO] [stdout] 277 | pub fn icon_warning() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_info` is never used
[INFO] [stdout]    --> src/utils/colors.rs:282:8
[INFO] [stdout]     |
[INFO] [stdout] 282 | pub fn icon_info() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_arrow` is never used
[INFO] [stdout]    --> src/utils/colors.rs:287:8
[INFO] [stdout]     |
[INFO] [stdout] 287 | pub fn icon_arrow() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_check` is never used
[INFO] [stdout]    --> src/utils/colors.rs:292:8
[INFO] [stdout]     |
[INFO] [stdout] 292 | pub fn icon_check() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_cross` is never used
[INFO] [stdout]    --> src/utils/colors.rs:297:8
[INFO] [stdout]     |
[INFO] [stdout] 297 | pub fn icon_cross() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_bullet` is never used
[INFO] [stdout]    --> src/utils/colors.rs:302:8
[INFO] [stdout]     |
[INFO] [stdout] 302 | pub fn icon_bullet() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_folder` is never used
[INFO] [stdout]    --> src/utils/colors.rs:307:8
[INFO] [stdout]     |
[INFO] [stdout] 307 | pub fn icon_folder() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_file` is never used
[INFO] [stdout]    --> src/utils/colors.rs:312:8
[INFO] [stdout]     |
[INFO] [stdout] 312 | pub fn icon_file() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_git` is never used
[INFO] [stdout]    --> src/utils/colors.rs:317:8
[INFO] [stdout]     |
[INFO] [stdout] 317 | pub fn icon_git() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_build` is never used
[INFO] [stdout]    --> src/utils/colors.rs:322:8
[INFO] [stdout]     |
[INFO] [stdout] 322 | pub fn icon_build() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_test` is never used
[INFO] [stdout]    --> src/utils/colors.rs:327:8
[INFO] [stdout]     |
[INFO] [stdout] 327 | pub fn icon_test() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_deploy` is never used
[INFO] [stdout]    --> src/utils/colors.rs:332:8
[INFO] [stdout]     |
[INFO] [stdout] 332 | pub fn icon_deploy() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_log` is never used
[INFO] [stdout]    --> src/utils/colors.rs:337:8
[INFO] [stdout]     |
[INFO] [stdout] 337 | pub fn icon_log() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `icon_status` is never used
[INFO] [stdout]    --> src/utils/colors.rs:342:8
[INFO] [stdout]     |
[INFO] [stdout] 342 | pub fn icon_status() -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_separator` is never used
[INFO] [stdout]    --> src/utils/colors.rs:351:8
[INFO] [stdout]     |
[INFO] [stdout] 351 | pub fn print_separator() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_box` is never used
[INFO] [stdout]    --> src/utils/colors.rs:361:8
[INFO] [stdout]     |
[INFO] [stdout] 361 | pub fn print_box(title: &str, lines: &[&str]) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_list` is never used
[INFO] [stdout]    --> src/utils/colors.rs:385:8
[INFO] [stdout]     |
[INFO] [stdout] 385 | pub fn print_list(items: &[&str]) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_key_value` is never used
[INFO] [stdout]    --> src/utils/colors.rs:392:8
[INFO] [stdout]     |
[INFO] [stdout] 392 | pub fn print_key_value(key: &str, value: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_step` is never used
[INFO] [stdout]    --> src/utils/colors.rs:401:8
[INFO] [stdout]     |
[INFO] [stdout] 401 | pub fn print_step(step: usize, total: usize, message: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_logger` is never used
[INFO] [stdout]   --> src/utils/logger.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn init_logger() {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_logger_with_level` is never used
[INFO] [stdout]   --> src/utils/logger.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn init_logger_with_level(level: LevelFilter) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_file_logger` is never used
[INFO] [stdout]   --> src/utils/logger.rs:63:8
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub fn init_file_logger(log_file: &str) -> Result<()> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `current_log_level` is never used
[INFO] [stdout]   --> src/utils/logger.rs:85:8
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub fn current_log_level() -> LevelFilter {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_log_enabled` is never used
[INFO] [stdout]   --> src/utils/logger.rs:90:8
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub fn is_log_enabled(level: log::Level) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_command` is never used
[INFO] [stdout]   --> src/utils/logger.rs:95:8
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub fn log_command(command: &str, args: &[&str]) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_operation_start` is never used
[INFO] [stdout]    --> src/utils/logger.rs:100:8
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn log_operation_start(operation: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_operation_end` is never used
[INFO] [stdout]    --> src/utils/logger.rs:105:8
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub fn log_operation_end(operation: &str, success: bool) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_error` is never used
[INFO] [stdout]    --> src/utils/logger.rs:114:8
[INFO] [stdout]     |
[INFO] [stdout] 114 | pub fn log_error(operation: &str, error: &anyhow::Error) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_performance` is never used
[INFO] [stdout]    --> src/utils/logger.rs:124:8
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub fn log_performance(operation: &str, duration_ms: u64) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_config` is never used
[INFO] [stdout]    --> src/utils/logger.rs:129:8
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub fn log_config(key: &str, value: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_user_action` is never used
[INFO] [stdout]    --> src/utils/logger.rs:134:8
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub fn log_user_action(action: &str, details: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_structured_logger` is never used
[INFO] [stdout]    --> src/utils/logger.rs:139:8
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub fn create_structured_logger() -> StructuredLogger {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StructuredLogger` is never constructed
[INFO] [stdout]    --> src/utils/logger.rs:144:12
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub struct StructuredLogger {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LogEntry` is never constructed
[INFO] [stdout]    --> src/utils/logger.rs:149:8
[INFO] [stdout]     |
[INFO] [stdout] 149 | struct LogEntry {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `log`, `to_json`, and `save_to_file` are never used
[INFO] [stdout]    --> src/utils/logger.rs:157:12
[INFO] [stdout]     |
[INFO] [stdout] 156 | impl StructuredLogger {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 157 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub fn log(&mut self, level: &str, target: &str, message: &str) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn to_json(&self) -> Result<String> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn save_to_file(&self, path: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_log_level_from_str` is never used
[INFO] [stdout]    --> src/utils/logger.rs:192:8
[INFO] [stdout]     |
[INFO] [stdout] 192 | pub fn set_log_level_from_str(level: &str) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_log_level` is never used
[INFO] [stdout]    --> src/utils/logger.rs:210:8
[INFO] [stdout]     |
[INFO] [stdout] 210 | pub fn show_log_level() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `list_log_levels` is never used
[INFO] [stdout]    --> src/utils/logger.rs:216:8
[INFO] [stdout]     |
[INFO] [stdout] 216 | pub fn list_log_levels() -> Vec<&'static str> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_progress_bar` is never used
[INFO] [stdout]   --> src/utils/progress.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn create_progress_bar(total: u64) -> ProgressBar {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_simple_progress_bar` is never used
[INFO] [stdout]   --> src/utils/progress.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn create_simple_progress_bar(total: u64) -> ProgressBar {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_download_progress_bar` is never used
[INFO] [stdout]   --> src/utils/progress.rs:61:8
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub fn create_download_progress_bar(total_bytes: u64) -> ProgressBar {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_multi_step_progress` is never used
[INFO] [stdout]   --> src/utils/progress.rs:74:8
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub fn create_multi_step_progress(steps: usize) -> ProgressBar {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_hidden_progress_bar` is never used
[INFO] [stdout]   --> src/utils/progress.rs:87:8
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub fn create_hidden_progress_bar(total: u64) -> ProgressBar {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `update_progress` is never used
[INFO] [stdout]   --> src/utils/progress.rs:93:8
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub fn update_progress(pb: &ProgressBar, position: u64, message: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `increment_progress` is never used
[INFO] [stdout]   --> src/utils/progress.rs:99:8
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub fn increment_progress(pb: &ProgressBar, delta: u64) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `finish_progress_success` is never used
[INFO] [stdout]    --> src/utils/progress.rs:104:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub fn finish_progress_success(pb: ProgressBar, message: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `finish_progress_error` is never used
[INFO] [stdout]    --> src/utils/progress.rs:113:8
[INFO] [stdout]     |
[INFO] [stdout] 113 | pub fn finish_progress_error(pb: ProgressBar, message: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `finish_progress_warning` is never used
[INFO] [stdout]    --> src/utils/progress.rs:122:8
[INFO] [stdout]     |
[INFO] [stdout] 122 | pub fn finish_progress_warning(pb: ProgressBar, message: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `simulate_progress` is never used
[INFO] [stdout]    --> src/utils/progress.rs:131:8
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub fn simulate_progress(message: &str, duration_ms: u64, steps: u64) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_parallel_progress` is never used
[INFO] [stdout]    --> src/utils/progress.rs:147:8
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub fn create_parallel_progress(name: &str, total: u64) -> ProgressBar {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `with_progress` is never used
[INFO] [stdout]    --> src/utils/progress.rs:162:8
[INFO] [stdout]     |
[INFO] [stdout] 162 | pub fn with_progress<F, T>(total: u64, message: &str, f: F) -> T
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_percentage` is never used
[INFO] [stdout]    --> src/utils/progress.rs:176:8
[INFO] [stdout]     |
[INFO] [stdout] 176 | pub fn print_percentage(current: u64, total: u64, width: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_counter` is never used
[INFO] [stdout]    --> src/utils/progress.rs:203:8
[INFO] [stdout]     |
[INFO] [stdout] 203 | pub fn print_counter(current: usize, total: usize, label: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `modern` is never used
[INFO] [stdout]    --> src/utils/progress.rs:224:12
[INFO] [stdout]     |
[INFO] [stdout] 224 |     pub fn modern() -> ProgressStyle {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `minimal` is never used
[INFO] [stdout]    --> src/utils/progress.rs:232:12
[INFO] [stdout]     |
[INFO] [stdout] 232 |     pub fn minimal() -> ProgressStyle {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `detailed` is never used
[INFO] [stdout]    --> src/utils/progress.rs:240:12
[INFO] [stdout]     |
[INFO] [stdout] 240 |     pub fn detailed() -> ProgressStyle {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `download` is never used
[INFO] [stdout]    --> src/utils/progress.rs:248:12
[INFO] [stdout]     |
[INFO] [stdout] 248 |     pub fn download() -> ProgressStyle {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `upload` is never used
[INFO] [stdout]    --> src/utils/progress.rs:256:12
[INFO] [stdout]     |
[INFO] [stdout] 256 |     pub fn upload() -> ProgressStyle {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 19s
[INFO] running `Command { std: "docker" "inspect" "176369f4e3933a899d88576de6ea180e7374b4751705ab4c1eac343006a19dc5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "176369f4e3933a899d88576de6ea180e7374b4751705ab4c1eac343006a19dc5", kill_on_drop: false }`
[INFO] [stdout] 176369f4e3933a899d88576de6ea180e7374b4751705ab4c1eac343006a19dc5
